package org.lion.service;

import org.lion.proxy.output.student.RecentHomeworkInfo;
import org.lion.proxy.output.student.StudentLoginResponse;
import retrofit2.Call;
import retrofit2.http.*;

import java.util.Map;

public interface Client {
//        /***********************************************************************************************************************/
//        /**学生接口－－begin**/
//        /***********************************************************************************************************************/
//        //**********************************************************************************************************************
//
//        /**
//         * [家长注册时信息的提交]
//         * name 家长姓名
//         * relation 跟孩子关系（譬如”父亲“，”母亲“...）
//         * phone 家长电话号码
//         * cid 小孩的id
//         * password 密码（md5后的串）
//         * code 家长的邀请码
//         * ostype 必须要带，”0”表示android，”1”表示IOS
//         * devicetoken 必须要带，后面推送用这个作为目标设备
//         * description 可选，设备描述，譬如ios9, android4, iphone6p, nexus 5等等信息
//         **/
//        @FormUrlEncoded
//        @POST("parents/register/?action=submit")
//        rx.Observable<RegisterInfo> onRegister(@FieldMap Map<String, String> fields);
//
//        /**
//         * [发送验证码]
//         * target 手机号
//         * sign 用来做合法性验证，是对yjyx_xxx_smssign(xxx是手机号)做MD5的结果
//         * stype 业务类型：注册用MREGISTER;修改密码时用MPASSWDCHG;忘记密码用MPASSWDRST
//         **/
//        @GET("sms/sendcode/")
//        rx.Observable<StatusCode> onSendSmsCode(@QueryMap Map<String, String> params);
//
//        /**
//         * [验证用户输入的验证码是否正确]
//         * target 手机号
//         * code 用户输入的验证码
//         * stype 业务类型：注册用MREGISTER;修改密码时用MPASSWDCHG;忘记密码用MPASSWDRST
//         **/
//        @GET("sms/checkcode/")
//        rx.Observable<StatusCode> onCheckSmsCode(@QueryMap Map<String, String> params);
//
//        /**
//         * [版本更新]
//         * action 固定为checkupgrade
//         * ostype 系统类型，0是安卓，1是IOS
//         * currver 前端当前版本号，譬如1.0.1
//         **/
//        @GET("{role}/version/")
//        rx.Observable<StatusCode> stuGetNewVersion(@Path("role") String role, @QueryMap Map<String, String> params);
//
//        /**
//         * [设备号更新]
//         * action 值固定为updatedevice
//         * ostype “0”表示安卓，”1”表示苹果
//         * devicetoken 设备号
//         * description 描述，可选参数
//         **/
//        @FormUrlEncoded
//        @POST("device/")
//        rx.Observable<StatusCode> stuUpdateDevice(@FieldMap Map<String, String> fields);
//
//        /**
//         * [验证用户名是否已存在]
//         * action 值固定为checkuserexist
//         * username 需要确认的用户名
//         **/
//        @GET("general/user/")
//        rx.Observable<UserNameCheckResponse> checkUserNameExist(@QueryMap Map<String, String> params);
//
//        /**
//         * [意见反馈上传图片到服务器]
//         * description 文本内容，限制300字，没有描述传空字符串
//         * images 图片列表 ['qiniu.com/1.jpg','qiniu.com/2.jpg,]最多6张，没有图传空列表
//         **/
//        @FormUrlEncoded
//        @POST("feedback/")
//        rx.Observable<StatusCode> stuFeedBack(@FieldMap Map<String, String> fields);
//
        /**
         * [学生登录]
         * username 用户名
         * password 不需要做MD5加密
         * ostype 必须要带，”0”表示android，”1”表示IOS
         * devicetoken 必须要带，后面推送用这个作为目标设备
         * description 可选，设备描述，譬如ios9, android4, iphone6p, nexus 5等等信息
         **/
        @FormUrlEncoded
        @POST("student/mobile/login/")
        Call<StudentLoginResponse> studentLogin(@FieldMap Map<String, String> fields);
//
//        /**
//         * [获取所教科目所有的题型]
//         * action 值固定为get_question_types
//         */
//        @GET("student/yj_questions/")
//        rx.Observable<QestionType> getQuestionType(@QueryMap Map<String, String> fields);
//
//        /**
//         * [学生登出]
//         **/
//        @POST("student/mobile/logout/")
//        rx.Observable<StatusCode> stuLogout();
//
//        /**
//         * [获取今天作业数据]
//         * action 值固定为m_gettaskhomepagedata
//         **/
//        @GET("student/tasks/")
//        rx.Observable<ToadyHomeworkInfo> fetchTodayHomework(@QueryMap Map<String, String> params);
//
        /**
         * [获取作业首页数据]
         * action 值固定为m_gettaskhomepagedata
         * 2.0版本多传一个"api" = 2 表示获取最近作业
         **/
        @GET("student/tasks/")
        Call<RecentHomeworkInfo> fetchRecentHomework(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取未读通知条数]
//         * action 值固定为getunreadcount
//         **/
//        @GET("student/tpnotice/")
//        rx.Observable<UnReadNoticeCountInfo> fetchUnreadCount(@QueryMap Map<String, String> params);
//
//        /**
//         * [上报某条通知已读]
//         * action 值固定为setonenoticenotified
//         **/
//        @FormUrlEncoded
//        @POST("student/mobile/tpnotice/")
//        rx.Observable<StatusCode> setOneNoticeNotified(@FieldMap Map<String, String> params);
//
//        /**
//         * [获取通知列表]
//         * * action 值固定为gettpnotice
//         * lastid 如果是获取老数据，传上次获取到的最老的那条id; 如果是刷新则传0
//         */
//        @GET("student/tpnotice/")
//        rx.Observable<TpNoticeInfo> fetchTpNoticeList(@QueryMap Map<String, String> params);
//
//        /**
//         * [某个科目的作业列表]
//         * action 值固定为list_tasks_to_me
//         * lastid 刷新最新数据时候传0;获取老数据传回上次最后一个id
//         * subjectid 科目id
//         * finished 可选,如果只查看已完成的作业，传1;只查看未完成的，传0; 查看所有的，不要传这个参数
//         * createtimebefore 可选，查询在此时间之前创建的
//         * createtimeafter 可选，查询在此时间之后创建的
//         **/
//        @GET("student/tasks/")
//        rx.Observable<SubjectHomeworkInfo> fetchSubjectHomework(@QueryMap Map<String, String> params);
//
//        /**
//         * [查看单次作业的完成情况]
//         * action 固定为m_viewresult
//         * tasktrackid  任务跟踪的id（上一步中有返回）
//         *
//         * @deprecated 1.0使用, 2.0版本废弃 see {@link Client#fetchResultHomeWork2(java.util.Map)}
//         **/
//        @GET("student/tasks/")
//        rx.Observable<SubjectHomeworkResultInfo> fetchResultHomeWork(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生端上报某次任务已读状态]
//         * action 值固定为mark_one_task_as_red
//         * tasktrackid tasktrackid号
//         * taskid 任务号
//         * 注意：tasktrackid和taskid二选一，优先传tasktrackid,如果没有则传taskid,譬如从推送点进来的时候，只有taskid
//         **/
//        @FormUrlEncoded
//        @PUT("student/mobile/tasks/")
//        rx.Observable<StatusCode> upLoadTaskRead(@FieldMap Map<String, String> params);
//
//        /**
//         * [某次任务的完成情况] 2.0使用
//         * action 值固定为 gettaskonestudentdetail
//         * taskid 任务id
//         **/
//        @GET("student/tasks/")
//        rx.Observable<SubjectHomeworkResultInfo2> fetchResultHomeWork2(@QueryMap Map<String, String> params);
//
//
//        /**
//         * [提交普通作业]/[提交微课作业]封装为1个接口实现
//         * action 值固定为task_exam_save_result
//         * examid/lessonid 作业id/微课id
//         * taskid 任务id
//         * examresult/lessonresult 作业结果,格式如下(注意序列化和urlencode):
//         * {"choice":[ #选择题信息列表
//         * [1593,[0],false,783],#格式是[id,学生答案列表,正确与否(true or false),此题用时]; 对于填空题，里面的答案列表各项是每个空填的字符串
//         * <p>
//         * [1591,[2],False,2]],
//         * "spendTime":911 #总共花的时间(秒)
//         * }
//         * submit 值固定为字符串”true”
//         * summary 汇总，格式如{"correct":0,"wrong":2}
//         **/
//        @FormUrlEncoded
//        @POST("student/mobile/tasks/")
//        rx.Observable<StatusCode> stuSubmitHomeWork(@FieldMap Map<String, String> fields);
//
//        /**
//         * [获取微课预览数据]
//         * action 值固定为m_get_task_lesson_preview_data
//         * taskid 任务号（注意是任务号，跟上面那个tasktrackid不一样）
//         * lessonid 微课id号，从任务列表里面的task__relatedresourceid字
//         **/
//        @GET("student/tasks/")
//        rx.Observable<SubjectHomeworkPreInfo> fetchPreviewHomeWork(@QueryMap Map<String, String> params);
//
//        @GET("student/tasks/")
//        rx.Observable<SubjectHomeworkPreInfo2> fetchPreviewHomeWork2(@QueryMap Map<String, String> params);
//
//
//        /**
//         * 某次任务中某个题目的详情
//         * GET /api/student/tasks/
//         * GET查询参数(实际请求时需要序列化)：
//         * action 值固定为 getonequestiondetailforonestudent
//         * taskid 任务id
//         * qtype 题目类型,选择题时值为"choice",搜索其他题型时值传题型id，这个id可以从获取所教科目所有题型接口那取得
//         * qid 题目id
//         *
//         * @param params
//         * @return
//         */
//
//        @GET("student/tasks/")
//        rx.Observable<QuestionDetail> fetchQuestionDetail(@QueryMap Map<String, String> params);
//
//
//        /**
//         * [学生错题库首页]
//         * action 值固定为getfailedquestionhomepagedata
//         **/
//        @GET("student/stats/")
//        rx.Observable<StudentErrorQuestionListInfo> fetchStuErrorQuestionList(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生获取单科错题库列表详情]
//         * action 值固定为getonesubjectfailedquestion
//         * subjectid 科目id
//         * targetlist 想要获取详情的列表，格式如:
//         * [{"t":1,"i":119,"a":[2]},{"t":2,"i":2,"a":[1,2]}],这是在上一接口中返回的，t表示questiontype; i表示题目id;a表示学生当然填写的答案
//         **/
//        @GET("student/stats/")
//        rx.Observable<StuOneSubErrorQuestionInfo> fetchOneSubErrorQuestionList(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生班级邀请码的验证]
//         * action 值固定为checkcode
//         * code 班级邀请码
//         **/
//        @FormUrlEncoded
//        @POST("student/mobile/register/")
//        rx.Observable<StuCheckClassCodeInfo> studentCheckClassCode(@FieldMap Map<String, String> fields);
//
//        /**
//         * [学生注册信息的提交]
//         * action 值固定为submit
//         * code 班级邀请码
//         * username 用户名
//         * realname 真实姓名
//         * phonenumber 电话号码
//         * password 密码
//         * passwordConfirm 确认密码(虽然传回服务器,app也需自行要求两次输入密码的一致性)
//         * smscode 短信验证码
//         * ostype 必须要带,”0”表示android，”1”表示IOS
//         * devicetoken 必须要带，后面推送用这个作为目标设备
//         * description 可选，设备描述，譬如ios9, android4, iphone6p, nexus 5等等信息
//         **/
//        @FormUrlEncoded
//        @POST("student/mobile/register/")
//        rx.Observable<StudentRegisterInfo> studentsRegister(@FieldMap Map<String, String> fields);
//
//        /**
//         * [学生(获取会员商品列表)]
//         * action 值固定为list
//         * firstid 移动端固定写0
//         * lastid 移动端固定写0
//         * direction 移动端固定写ASC
//         **/
//        @GET("student/mobile/m_product/")
//        rx.Observable<MemberProduct> fetchStuMemberProductList(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生(获取单个会员商品详情)]
//         * action 值固定为getonememproductinfo
//         * subjectid 科目id
//         **/
//        @GET("student/mobile/m_product/")
//        rx.Observable<ProductItem> fetchOneSubMemebrProduct(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生试用某个会员产品]
//         * action 值固定为trial
//         * productid 会员商品id
//         **/
//        @FormUrlEncoded
//        @POST("student/mobile/m_product/")
//        rx.Observable<StatusCode> onStuFreeUseProduct(@FieldMap Map<String, String> fields);
//
//        /**
//         * [查看学生对某一学科的会员状态]
//         * action 值固定为subjectstatus
//         * subjectid 科目id
//         **/
//        @GET("student/mobile/m_product/")
//        rx.Observable<ChildMemberInfo> checkStuMemberState(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生购买某个会员产品]
//         * action 值固定为purchase
//         * productid 会员商品id
//         * ppi套餐index号，从获取商品列表接口里的price_package里读取，注意index从0开始
//         **/
//        @FormUrlEncoded
//        @POST("student/mobile/m_product/")
//        rx.Observable<AliPayInfo> onStuBuyProduct(@FieldMap Map<String, String> fields);
//
//        /**
//         * [学生修改头像(获取七牛云token)]
//         * action 值固定为getuploadtoken
//         * resource_type 图片为img, 视频为video
//         **/
//        @GET("student/qiniu/")
//        rx.Observable<QiNiuToken> stuGetQiniuToken(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生修改头像(上报头像地址)]
//         * action 值固定为”chavatar”
//         * url  头像七牛云地址
//         **/
//        @FormUrlEncoded
//        @POST("student/setting/")
//        rx.Observable<StatusCode> onStuUploadIcon(@FieldMap Map<String, String> fields);
//
//        /**
//         * [学生修改姓名和手机号]
//         * action 值固定为modify
//         * type 修改类型,取值为name or phone
//         * value 修改后的值，譬如张三或者138xxxxxxx
//         **/
//        @FormUrlEncoded
//        @POST("student/setting/")
//        rx.Observable<StatusCode> onModifyStuInfo(@FieldMap Map<String, String> fields);
//
//        /**
//         * [统计(获取各学科统计汇总)]
//         * action 值固定为m_get_student_task_and_question_count
//         **/
//        @GET("student/stats/")
//        rx.Observable<StudentAllSubjectCollectionInfo> fetchStuAllSubCollectionInfo(@QueryMap Map<String, String> params);
//
//        /**
//         * [统计(获取单个学科趋势图数据)]
//         * action 值固定为 list_my_latest_finished_tasks
//         * subjectid 科目id
//         **/
//        @GET("student/tasks/")
//        rx.Observable<StudentCollectionOneSubChartDataInfo> fetchStuOneSubCharData(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取公告]
//         * action 值固定为 get_my_notice
//         **/
//        @GET("student/yj_notice/")
//        rx.Observable<NoticeInfo> stuFetchNotice(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取系统里版本，年级，册号,科目]
//         * action 值固定为 get_my_notice
//         **/
//        @GET("student/vgsv/")
//        rx.Observable<BookInfo> fetchBookInfo(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取给定年级科目版本册号书本对应的章节目录]
//         * action 值固定为getbookunit
//         * gradeid 年级id号
//         * verid 教材版本对应的id号
//         * volid 教材册号对应的id号
//         * subjectid 科目id号
//         **/
//        @GET("student/vgsv/")
//        rx.Observable<VersionTextBookDetailInfo> fetchBookChapter(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取某个节点的亿教课内容]
//         * action 值固定为m_getbootunit_lesson
//         * gradeid 年级id号
//         * verid 教材版本对应的id号
//         * volid 教材册号对应的id号
//         * subjectid 科目id号
//         * textbookunitid 章节目录叶子节点id，譬如ZJ_1_0_0
//         **/
//        @GET("student/product_yjmemeber/")
//        rx.Observable<YjLessonDetailInfo> fetchStudentYjLesson(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取三阶题题目信息]
//         * action 值固定为m_getmany
//         * subjectid 科目id
//         * qidlist 题目id列表，譬如[283,284]
//         **/
//        @GET("student/yj_questions/choice/")
//        rx.Observable<OneQuestionDetailInfo> fetchStuLessonQuestion(@QueryMap Map<String, String> params);
//
//        /**
//         * [学生修改密码]
//         * action 值固定为changeuserpassword
//         * oldpassword 原密码
//         * newpassword 新密码
//         **/
//        @FormUrlEncoded
//        @PUT("student/mobile/yj_students/")
//        rx.Observable<StatusCode> onStuResetPsw(@FieldMap Map<String, String> fields);
//
//        /**
//         * [学生更改班级]
//         * action 值固定为changemyclass
//         * invitecode 新班级的邀请码
//         **/
//        @FormUrlEncoded
//        @PUT("student/mobile/yj_students/")
//        rx.Observable<StatusCode> onStuChangeClass(@FieldMap Map<String, String> params);
//
//        /**
//         * [上报消息通知设置]
//         * action 值固定为notify_setting
//         * receive_notify 是否接收通知,”1“表示接收，”0”不接收
//         * with_sound 通知是否有提示音，”1“表示有声言，”0“没有
//         * sound 提示音文件，譬如”default“
//         * vibrate 通知是否有振动，”1“表示有振动，”0“没有振动
//         */
//        @FormUrlEncoded
//        @POST("student/setting/")
//        rx.Observable<StatusCode> stuReportSetting(@FieldMap Map<String, String> fields);
//
//        /**
//         * 根据用户名获得手机号
//         */
//        @GET("utils/password/get_user_phone/")
//        rx.Observable<StatusCode> fetchPhoneByUserName(@Query("username") String username);
//
//
//        /**
//         * 根据用户名发送短信验证码
//         */
//        @GET("utils/password/get_reset_password_sms/")
//        rx.Observable<StatusCode> fetchCodeByUserName(@Query("username") String username);
//
//        /**
//         * 重置密码
//         */
//        @FormUrlEncoded
//        @POST("utils/password/reset_password/")
//        rx.Observable<StatusCode> onResetPassWord(@Field("username") String username, @Field("smscode") String smscode, @Field("password") String password);
//
//        /**
//         * [获取薄弱点汇总信息]
//         * action 固定值为getwkpsummary
//         */
//        @GET("student/stats/")
//        rx.Observable<StudentWeekPointSummaryInfo> fetchWeekPointSummary(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取某个科目的薄弱点]
//         * action 固定值为getsubjectweakknowledgepoint
//         * subjectid 科目id
//         */
//        @GET("student/stats/")
//        rx.Observable<OneSubjectWeekPointInfo> fetchOneSubWeekPoint(@QueryMap Map<String, String> params);
//
//        /**
//         * [点击薄弱点查看知识点讲解]
//         * action值固定为getpklessons
//         * kpid知识点id，值譬如1=ZSD_1_0_0_0_1
//         * subjectid 科目id
//         */
//        @GET("student/yj_lessons/")
//        rx.Observable<StudentVideoAnalysisInfo> fetchVideoExplanation(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取所有有效和无效学科会员列表]
//         * action 值固定为listinuseandunusedsubjects
//         */
//        @GET("student/yj_products/")
//        rx.Observable<InUseAndUnUseSubjectInfo> fetchSubjectMember(@QueryMap Map<String, String> params);
//
//        /**
//         * [获取所有科目基本信息]
//         * action 值固定为subjectstable
//         **/
//        @GET("student/subject/")
//        rx.Observable<SubjectInfo> fetchAllSubject(@Query("action") String action);
//
//        /**
//         * [获取学生所在班级的人员信息]
//         * action 值固定为get_all_persion_in_class
//         */
//        @GET("student/mobile/yj_students/")
//        rx.Observable<ClassMemberInfo> getClassMember(@Query("action") String action);
//
//        /**
//         * [获取学生单个学科历史完成任务正确率趋势图数据]
//         * action值固定为get_subject_task_correct_ratio
//         * subjectid 科目id
//         * direction 获取数据类型，1为获取新数据;0为获取老数据
//         * lastid 上次获取到的最后一个任务id,注意这个id要根据direction来设置是上次获取到最大的还是最小的那个,如果是刷新最新数据，lastid应该传0
//         */
//        @GET("student/statistic/")
//        rx.Observable<ClassLintChartInfo> getLineChartData(@QueryMap Map<String, String> params);
//
//        /**
//         * [上报生日]
//         * action值固定为setbirth
//         * birth 生日，格式: 2016-08-17
//         */
//        @FormUrlEncoded
//        @POST("student/setting/")
//        rx.Observable<StatusCode> reportBirth(@FieldMap Map<String, String> fields);
//
//        /**
//         * [上报性别]
//         * action值固定为setgender
//         * gender 一个字符，M表示男，F表示女
//         */
//        @FormUrlEncoded
//        @POST("student/setting/")
//        rx.Observable<StatusCode> reportGender(@FieldMap Map<String, String> fields);
//
//        /**
//         * [学生查看我的订单]
//         * action 值固定为list
//         * lastid 上次查看到的最后一条id，如果传值0表示获取最新数据，传其他正整数，表示用户上拉获取更早的订单信息,说明：默认一次返回20条
//         */
//        @GET("student/order/")
//        rx.Observable<OrderListInfo> fetchFinishedOrder(@QueryMap Map<String, String> params);
//
//
//        /**
//         * [修改单科的错题状态]
//         * action值固定为set_student_failed_questions_corrected
//         * subjectid科目id
//         * targetlist格式如:[{"t": 1,"i": 119}, {"t": 2,"i": 2}],t表示questiontype:i表示questionid
//         */
//        @FormUrlEncoded
//        @POST("student/statistic/")
//        rx.Observable<StatusCode> modifyErrorQuestions(@FieldMap Map<String, String> fields);
//
//
//        /**
//         * [获取某题的同类题(类似题)]
//         * action 值固定为get_questions_with_same_kp
//         * qid 题目id
//         **/
//        @GET("student/yj_questions/{qtype}/")
//        rx.Observable<SimilarQuestion> fetchSimilarQuestion(@Path("qtype") String role, @QueryMap Map<String, String> params);
//        /***********************************************************************************************************************/
//        /**学生端接口－－end**/
//        /***********************************************************************************************************************/
    }